package com.pan.admin.module.visualizer.dao;

import com.pan.admin.module.datareport.entity.StartTimeAndEndTime;
import com.pan.admin.module.visualizer.entity.po.ChannelVisualizerFormFieldPO;
import com.pan.admin.module.visualizer.entity.vo.LoanChannelVisualizerVO;
import com.pan.admin.module.visualizer.entity.vo.LoanMarketDetailVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * H5/APP渠道
 *
 * @author caoxin
 */
@Mapper
public interface LoanChannelVisualizerDao {

    /**
     * 渠道
     */
    List<LoanChannelVisualizerVO> listLoanChannel(@Param("name") String name);

    /**
     * uv
     */
    List<LoanChannelVisualizerVO> listUv(@Param("startTimeAndEndTime") StartTimeAndEndTime startTimeAndEndTime);

    /**
     * pv
     */
    List<LoanChannelVisualizerVO> listPv(@Param("startTimeAndEndTime") StartTimeAndEndTime startTimeAndEndTime);

    /**
     * 注册
     */
    List<LoanChannelVisualizerVO> listRegister(@Param("startTimeAndEndTime") StartTimeAndEndTime startTimeAndEndTime);

    /**
     * 表单
     */
    List<LoanChannelVisualizerVO> listForm(@Param("startTimeAndEndTime") StartTimeAndEndTime startTimeAndEndTime);

    /**
     * 老用户
     */
    List<LoanChannelVisualizerVO> listOldUser(@Param("startTimeAndEndTime") StartTimeAndEndTime startTimeAndEndTime);

    /**
     *  统计资质，指定资质
     *
     *  @param  loanFormFieldId
     *  @param  startTimeAndEndTime
     *  @return List
     */
    List<ChannelVisualizerFormFieldPO> listByFormFieldById(@Param("loanFormFieldId") Long loanFormFieldId, @Param("startTimeAndEndTime") StartTimeAndEndTime startTimeAndEndTime);

    /**
     * 贷超
     */
    List<LoanChannelVisualizerVO> listLoanMarket(@Param("startTimeAndEndTime") StartTimeAndEndTime startTimeAndEndTime);

    /**
     * 表单收益
     */
    List<LoanChannelVisualizerVO> listFormRevenue(@Param("startTimeAndEndTime") StartTimeAndEndTime startTimeAndEndTime);

    /**
     * 贷超收益
     */
    List<LoanChannelVisualizerVO> listLoanMarketRevenue(@Param("startTimeAndEndTime") StartTimeAndEndTime startTimeAndEndTime);

    /**
     * 贷超详情
     */
    List<LoanMarketDetailVO> listLoanMarketDetail(@Param("startTimeAndEndTime") StartTimeAndEndTime startTimeAndEndTime, @Param("id") Long id);
}
